[Ajuda] Mudar caractere em String [RESOLVIDO]

1. [Ajuda] Mudar caractere em String [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 18/01/2011 - 13:58h

A minha função para modificar os caracteres de uma string esta dando erro

A função deve receber uma frase qualquer e mudar os caracteres pelo seu sucessor. Ex: Bola deverá ser modificada por: Cpmb

E deverá obedecer ao prótotipo: void shift_string (char* str);

Fiz o programa deste jeito:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void shift_string (char* str) {

int i=0;

while(str[i]!='{TTEXTO}'){

int contador=0;

if (str[i] =='a')
str[i] = 'b';
if (str[i] =='A')
str[i] = 'B';
if (str[i] =='b')
str[i] = 'c';
if (str[i] =='C')
str[i] = 'C';
if (str[i] =='d')
str[i] = 'e';
if (str[i] =='D')
str[i] = 'E';
if (str[i] =='e')
str[i] = 'f';
if (str[i] =='E')
str[i] = 'F';
if (str[i] ='g')
str[i] = 'h';
if (str[i] =='G')
str[i] = 'H';
if (str[i] =='i')
str[i] = 'j';
if (str[i] =='I')
str[i] = 'J';
if (str[i] =='k')
str[i] = 'l';
if (str[i] =='K')
str[i] = 'L';
}
}

int main(void){
char frase[100];
char c;
printf("digite uma frase:\n");
scanf("%c",&frase);

printf("A string modificada eh: %c\n",shift_string(frase));
system("pause");
return 0;

}

Não sei qual e o erro que cometi ao fazer o programa


  


2. MELHOR RESPOSTA

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 19/01/2011 - 08:46h

O programa abaixo deve funcionar:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char *shift_string (char str[]) {//retorna vetor para char
int i=0;
char *Buffer;
Buffer = (char *)calloc(100, sizeof(char));
strcpy ( Buffer, str );
while(str[i]!='{TEXTO}'){
if (str[i] =='a')
Buffer[i] = 'b';
else if (str[i] =='A')
Buffer[i] = 'B';
else if (str[i] =='b')
Buffer[i] = 'c';
else if (str[i] =='C')
Buffer[i] = 'C';
else if (str[i] =='d')
Buffer[i] = 'e';
else if (str[i] =='D')
Buffer[i] = 'E';
else if (str[i] =='e')
Buffer[i] = 'f';
else if (str[i] =='E')
Buffer[i] = 'F';
else if (str[i] =='g')//Tinha um erro aqui
Buffer[i] = 'h';
else if (str[i] =='G')
Buffer[i] = 'H';
else if (str[i] =='i')
Buffer[i] = 'j';
else if (str[i] =='I')
Buffer[i] = 'J';
else if (str[i] =='k')
Buffer[i] = 'l';
else if (str[i] =='K')
Buffer[i] = 'L';
i++;//O índice do vetor precisa avançar!
}
return Buffer;
}

int main(void){
char frase[100];
printf("digite uma frase:\n");
gets(frase);//Pega o sring inteiro de uma vez
printf("A string modificada eh: %s\n",shift_string(frase));
system("pause");
return 0;
}

Embraces!

3. "Não sei qual e o erro que cometi ao fazer o programa"

André
andrezc

(usa Debian)

Enviado em 18/01/2011 - 14:06h

E nem nós, membros do fórum! Não guarde em segredo a mensagem de erro emitida pelo compilador (caso tenha), senão ficará difícil oferecer ajuda. Dê mais informações, com exemplos de entrada e saída. (eu digitei x, apareceu y, sendo que era pra aparecer n...).

E outra, poste o seu código em: http://pastebin.com/



4. Re: [Ajuda] Mudar caractere em String [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 18/01/2011 - 14:34h

Segue o código abaixo no pastebin

http://pastebin.com/54Dwu3S2

O erro do compilador e este:

D:\Documents and Settings{TTEXTO}0890230137\Desktop\programa_4.cpp In function `int main()':
50 D:\Documents and Settings{TTEXTO}0890230137\Desktop\programa_4.cpp invalid use of void expression


5. Re: [Ajuda] Mudar caractere em String [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 18/01/2011 - 14:45h

Na função shift_string(), esperimente alterar o seu tipo para int. E na função principal, você coloca void como argumento, mais depois coloca um return, isso não é necessário. É a esse erro que o compilador se refere. Mas me parece que há outros erros aí...


6. Tente isso

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 18/01/2011 - 15:00h



#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char *shift_string (char str[]) {//retorna vetor para char

int i=0;
char *Buffer;

Buffer = (char *)calloc(sizeof(strlen(str)), sizeof(char));
strcpy ( Buffer, str );

while(str[i]!='{TTEXTO}'){

int contador=0;

if (str[i] =='a')
Buffer[i] = 'b';
if (str[i] =='A')
Buffer[i] = 'B';
if (str[i] =='b')
Buffer[i] = 'c';
if (str[i] =='C')
Buffer[i] = 'C';
if (str[i] =='d')
Buffer[i] = 'e';
if (str[i] =='D')
Buffer[i] = 'E';
if (str[i] =='e')
Buffer[i] = 'f';
if (str[i] =='E')
Buffer[i] = 'F';
if (str[i] ='g')
Buffer[i] = 'h';
if (str[i] =='G')
Buffer[i] = 'H';
if (str[i] =='i')
Buffer[i] = 'j';
if (str[i] =='I')
Buffer[i] = 'J';
if (str[i] =='k')
Buffer[i] = 'l';
if (str[i] =='K')
Buffer[i] = 'L';
}
return Buffer;
}

int main(void){
char frase[100];
char c;
printf("digite uma frase:\n");
scanf("%c",&frase);

printf("A string modificada eh: %s\n",shift_string(frase));//Mudado de %c para %s
system("pause");
return 0;

}

Poste os resultado por favor.


Embraces!


7. Re: [Ajuda] Mudar caractere em String [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 19/01/2011 - 00:42h

Ezequias Rocha

Compilei o programa e apresenta erro na hora de executar na hora de mostrar a resposta fica
travado.




8. Re: [Ajuda] Mudar caractere em String [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2011 - 12:51h

Use a função strcmp() para comparar strings.


9. Re: [Ajuda] Mudar caractere em String [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 20/01/2011 - 00:32h

Ezequias Rocha

Teste e o código rodou certinho
Obrigado pela ajuda

Tópico resolvido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts